<?php

namespace Modules\Shop\Entities;

use Illuminate\Database\Eloquent\Model;
use houdunwang\arr\Arr;
class category extends Model
{
    protected  $guarded=[];

    /**
     * 关联模型
     */
    public function fenlei(){
        //第一个参数是被关联的模型
        //第二个为外建/这里是多对一所以为内外键互换位置
        //第三个为内键
        return $this->belongsTo(Category::class,'pid','id');
    }

    /**
     * 处理编辑分类方法
     * @param null $cate
     * @return mixed
     */
    public static function getTreeCategory($cate=null){
        //获取所有分类数据
        $data = self::get();
        //判断如果cate不为空的话
            if(!is_null($cate)){
            foreach ($data as $k=>$v){
                //如果子类的pid等于父类的id，就给父类加一个默认选中属性
              $data[$k]['_selected']=$cate['pid']==$v['id'];
              $data[$k]['_disabled']=$cate['id'] ==$v['id']||Arr::isChild($data, $v['id'], $cate['id'],'id',  'pid');
//参数                         说明
//data                      	操作的数组
//sid                      	子栏目id
//pid                      	父栏目id
//fieldPri                 	唯一键名，如果是表则是表的主键
//fieldPid                  	父 ID 键名;
//
            }
        }

        $category = Arr::tree($data ? $data->toArray() : [], 'cname', 'id', 'pid');
//        参数                   说明
//        $data                 一定只能是数组,不能是对象,数据应该是所有分类
//        $title                需要处理的字段名称
//        $fieldPri             当前表的主键id
//        $fieldPid             当前表的父级id
        //将处理后的数据返出去
        return $category;
    }
    public static function hasChildCategory($cate){
        //获取所有分类数据
       $data=self::get();

      return  Arr::hasChild($data, $cate['id'],'pid');
//参数                         说明
//data                      	操作的数组
//cid                      	栏目cid
//fieldPid                  	父 ID 键名
    }
}
